Il sistema operativo Come alcuni di voi avranno imparato, il compito del sistema operativo di un elaboratore è frapporsi fra l'utente, i programmi e l'hardware; in altri termini costituisce un'interfaccia in modo che dal punto di vista dei programmi facci apparire la macchina come una serie di device (dispositivi) che permettano di usufruire di quest'ultima senza utilizzare direttamente l'hardware; dall'altra parte deve convertire i comandi impartiti dai programmi ai device logici (definiti logici perché sono "immaginari" cioè non fisici) in una serie di istruzioni che pilotino correttamente l'hardware; tutto ciò non solo per massima flessibilità di utilizzo ma soprattutto, in caso di eventuale cambio di hardware (gli amighisti ne sanno qualcosa), basta semplicemente cambiare il s.o. senza mutare i programmi che così potranno girare correttamente anche su modelli diversi. Il s.o. dell'Amiga è composto da diversi livelli di software per una migliore gestione della poderosa struttura hardware appena vista, ma anche per le caratteristiche potenti di cui è dotato (multitasking, interfaccia grafica in ambiente WIMP = Windows Icons Menù Puntator = finestre, icone, menù e puntatori ecc.). I diversi livelli di Amiga, partendo dal più basso sono: - Hardware - Resource - Device - Library - Workbench, CLI, Programmi - Utente. Il software di livello immediatamente superiore all'hardware è normalmente il device, che si occupa tramite comandi vari di pilotare l'hardware; alcuni devices sono: trackdisk.device, parallel.device, serial.device, audio.device ecc.. Non sempre il device è il software direttamente connesso, in alcuni casi a causa della difficoltà di gestione del dispositivo hardware, occorre un ulteriore livello che viene denominato resource; esempio il disk.resource, ricordo infatti che il drive viene pilotato direttamente senza controller hardware, come comunemente avviene in altri sistemi (e proprio per questo che l'Amiga può leggere altri formati di dischi). In altri casi invece non occorre nemmeno il device, per cui la library risulta connessa direttamente all'hardware, un esempio è la graphics.library. La library o tradotto in italiano libreria, è una serie (una libreria appunto) di funzioni messe a disposizione dei programmi (e quindi a colui che li crea) per gestire tutta la macchina; esempi di libreria sono: exec.library, graphics.library, intuition.library, dos.library, asl.library ecc. A quanto detto exec.library costituisce un'eccezione, in quanto si trova praticamente a tutti i livelli (cioè può pilotare direttamente l'hardware, alcune librerie possono sfruttare sue funzioni, può pilotare direttamente librerie ecc.); per farvi capire quanto questa libreria sia importante sappiate che l'indirizzo in cui è contenuto il suo puntatore è l'unica cosa fissa dell'Amiga! Tutto il resto: device, librerie, variabili, programmi vengono allocati (fra l'altro proprio grazie a funzioni dell'exec) dove c'è disponibilità di memoria; insomma l'exec è colui che si occupa di far funzionare correttamente tutto l'Amiga. Nel nostro viaggio partiremo dalle librerie (che costituiscono il 90% di quello che un programmatore Amiga deve conoscere) fino ai devices e resorces, e anche qualcosa sull'hardware che il s.o. non ci può dare.